//
//  UIFont+DDPixelFont.m
//  LuPingBox
//
//  Created by 茶 on 2023/10/31.
//  Copyright © 2023 DD. All rights reserved.
//

#import "UIFont+PixelFont.h"

@implementation UIFont (PixelFont)


+ (void)load{
    //保证线程安全
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Class class = [self class];
        //拿到系统方法
        [self regular:class];
        [self boldFont:class];
        //注意，只有调用了下面这个方法的控件才会执行字体修改，默认字号大小的控件不会修改。
        //[UIFont systemFontOfSize:12]
    });
}
 
+ (void)regular:(Class)class {
    Method orignalMethod = class_getClassMethod(class, @selector(systemFontOfSize:));
    //拿到自己定义的方法
    Method myMethod = class_getClassMethod(class, @selector(pixel_systemFontOfSize:));
    //交换方法
    method_exchangeImplementations(orignalMethod, myMethod);
}

+ (void)boldFont:(Class)class {
    Method orignalMethod = class_getClassMethod(class, @selector(boldSystemFontOfSize:));
    //拿到自己定义的方法
    Method myMethod = class_getClassMethod(class, @selector(pixel_boldSystemFontOfSize:));
    //交换方法
    method_exchangeImplementations(orignalMethod, myMethod);
}

//自己的方法
+ (UIFont *)pixel_systemFontOfSize:(CGFloat)fontSize{
    UIFont *font = CAFontScaleRegular(fontSize);
    if (!font){
        //判空，如果字体不存在就返回系统默认字体，不然会崩溃
        return [self pixel_systemFontOfSize:fontSize];
    }
    return font;
}

//自己的方法
+ (UIFont *)pixel_boldSystemFontOfSize:(CGFloat)fontSize{
    UIFont *font = CAFontScaleSemibold(fontSize);
    if (!font){
        //判空，如果字体不存在就返回系统默认字体，不然会崩溃
        return [self pixel_boldSystemFontOfSize:fontSize];
    }
    return font;
}

@end
